function getSmallPet2() {
    return {
        layEggs: function () { },
        // swim:()=>{}
        fly: function () { }
    };
}
var pet2 = getSmallPet2();
pet2.layEggs;
// 方法1
// 使用断言 来判断到底会返回那种类型的数据结构
// if((<Fish>pet2).swim){
//     (<Fish>pet2).swim()
// }else{
//     (<Bird>pet2).fly()
// }
// 方法2 断言封装
function isFish(pet) {
    // pet is Fish就是类型谓词。 谓词为 parameterName is Type这种形式， 
    // parameterName必须是来自于当前函数签名里的一个参数名。
    return pet.swim !== undefined;
}
if (isFish(pet2)) {
    pet2.swim();
}
else {
    pet2.fly();
}
